package com.java.dao;

import com.java.bean.User;
import com.java.exception.DuplicateException;

import java.util.List;
import java.util.Map;

public interface BaseUserDao {

    /**
     * 控制台参数 size day
     *
     * @return 控制台参数
     */
    Map<String, Integer> console();

    /**
     * 获取总条数
     *
     * @return 总条数
     */
    int total();

    /**
     * 用户登录，并修改登录时间
     *
     * @param name 用户名
     * @param password 密码
     * @return 登录成功返回用户信息，否则返回null
     */
    User login(String name, String password);

    /**
     * 根据用户名查找用户信息
     * @param uname 用户名
     * @return 用户信息
     */
    User getUserByName(String uname);

    /**
     * 根据用户手机号码查找用户信息
     * @param uphone 用户手机号码
     * @return 用户信息
     */
    User getUserByPhone(String uphone);

    /**
     * 列出用户
     * @param offset 起始位置
     * @param pageNumber 查询数量
     * @return 用户集合
     */
    List<User> listUser(int offset, int pageNumber);

    /**
     * 添加用户
     *
     * @param user 用户信息 参数：name phone email password regdate
     * @return 生成的键
     */
    int insert(User user) throws DuplicateException;

    /**
     * 更新用户信息
     * @param id 用户id
     * @param newUser 新的用户信息 参数：name phone email password
     * @return 影响行数
     */
    int update(int id, User newUser) throws DuplicateException;

    /**
     * 删除用户（假删除）
     * @param id 用户id
     * @return 影响行数
     */
    int delete(int id);

    User getUserByEmail(String email);
}
